package com.sprouting.personal.dao;

import com.sprouting.personal.model.vo.*;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sprouting.personal.model.entity.Homework;

import java.util.Date;
import java.util.List;

/**
 * 家庭作业 dao
 *
 * @author ：sprouting
 * @date 创建时间： 2023-07-15 10:36:32
 */
public interface HomeworkDao extends BaseMapper<Homework> {

	/**
	 * 通过ID查询单条数据
	 * @param id 主键
	 * @return 家庭作业
	 */
	Homework getHomeworkById(String id);

	/**
	 * 分页查询
	 * @param page 分页参数
	 * @param homework 查询参数
	 * @return 条件查询结果
	 */
	Page<HomeworkVo> getHomeworkPage(Page page, @Param("entity") Homework homework);

	/**
	 * 根据家庭成员查询 未完成的作业
	 * @param memberFamilyId 家庭成员ID
	 * @return
	 */
    List<HomeworkVo> getIncompleteHomeworkByMemberFamilyId(String memberFamilyId);

	/**
	 * 获取今天已完成的作业
	 * @param memberFamilyId 家庭成员ID
	 * @param now 查询的时间
	 * @return
	 */
	List<HomeworkVo> getHomeworkCompletedToday(@Param("memberFamilyId") String memberFamilyId, @Param("now") Date now);

	/**
	 * 获取未检查的作业
	 * @param memberFamilyId 家庭成员ID
	 * @return
	 */
	List<HomeworkVo> getUncheckedHomework(String memberFamilyId);

	/**
	 * 统计作业数据
	 * @param memberFamilyId 家庭成员ID
	 * @return
	 */
	HomeworkStatistics statistics(String memberFamilyId);

	/**
	 * 获取学科作业数量和名称
	 * @param memberFamilyId 家庭成员id
	 * @return
	 */
	List<DisciplinesVo> getDisciplinesNameNum(String memberFamilyId);

	/**
	 * 根据家庭成员ID获取最近执行的100条家庭作业记录
	 * @param memberFamilyId 家庭成员
	 * @return
	 */
	List<HomeworkVo> getLast100Log(String memberFamilyId);

	/**
	 * 根据家庭成员ID 获取完成次数做多的作业10条
	 * @param memberFamilyId 家庭成员ID
	 * @return
	 */
	List<CompleteTheMostHomework> getCompleteTheMostTask(String memberFamilyId);

}
